iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 8

Day 8: 那一夜,我對自己的 code 開了一槍 - Bullet

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發,每日一套件第 8 天,跟著我一起走完這段旅程,建立出自己的常用套件庫吧!
讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件。

Day 8: Bullet

Bullet,一個名字聽起來意味不明的套件,卻有著相當重要的功能。監看你的開發 queries 並且提醒你是否有 N + 1 的問題,要用 eager loading 了,以及是不是使用了不必要的 eager loading 而可以用 counter cache。

這邊就懶得囉說 N+1 是什麼了,如果你不知道 N+1 那其實也不用裝這個了吧。
要怎麼使用呢?

安裝方式

老招 bundle add 先,愛用 bundle add 的原因。
就是可以少打一個 bundle install,救救肌腱炎,人人有責。

bundle add bullet

gem 記得丟到 group dev, test 裡,接著輸入:

bundle exec rails g bullet:install

應該會出現一段話

問你 test 環境裡要不要使用,y。
之後在 environments/development.rb 跟 test.rb 裡,就會寫入預設的 config。
config 的設定可以客製化微調,沒有很難,讀文件吧。

development.rb

  config.after_initialize do
    Bullet.enable        = true
    Bullet.alert         = true
    Bullet.bullet_logger = true
    Bullet.console       = true
    Bullet.rails_logger  = true
    Bullet.add_footer    = true
  end

test.rb

  config.after_initialize do
    Bullet.enable        = true
    Bullet.bullet_logger = true
    Bullet.raise         = true # raise an error if n+1 query occurs
  end

然後呢~?然後就完成了!
要怎麼測試呢?直接 rails sbin/dev 進去看
如果有監測到,就會直接一個彈跳視窗出來,然後同時左下角也會有通知顯示
同時也會顯示在瀏覽器 console 內,如下圖:
跳窗:

左下 footer:

console:

你就知道該幹嘛了!快去修吧!
簡單、好用,必收套件收起來。
我們明天見!


上一篇
Day 7: 一步到位,分頁全能王 - Pagy
下一篇
Day 9 : 把時間花在更有意義的地方吧!專業的假資料達人 - Faker
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
HAO豪
iT邦新手 5 級 ‧ 2023-09-23 23:35:16

好大牌,連 N+1 都不介紹了。

Weber iT邦新手 4 級 ‧ 2023-09-24 00:03:07 檢舉

/images/emoticon/emoticon01.gif

我要留言

立即登入留言